package com.caregiver.watch.business.data.dao;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.caregiver.watch.business.data.model.po.HealthEcg;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

import static com.caregiver.watch.common.constant.DataSourceName.SHARDING;

/**
 * 心电数据访问接口
 */
@Mapper
@DS(SHARDING)
public interface HealthEcgDao {
    
    /**
     * 插入心电数据
     * @param record 心电数据实体
     * @return 插入记录数
     */
    int insert(HealthEcg record);
    
    /**
     * 根据主键查询心电数据
     * @param id 主键
     * @return 心电数据实体
     */
    HealthEcg selectByPrimaryKey(Long id);
    
    /**
     * 根据主键更新心电数据
     * @param record 心电数据实体
     * @return 更新记录数
     */
    int updateByPrimaryKey(HealthEcg record);
    
    /**
     * 根据主键删除心电数据
     * @param id 主键
     * @return 删除记录数
     */
    int deleteByPrimaryKey(Long id);
    
    /**
     * 根据用户ID和数据采集时间查询心电数据
     * @param userId 用户ID
     * @param recordedAt 数据采集时间
     * @return 心电数据列表
     */
    List<HealthEcg> selectByUserIdAndTime(@Param("userId") Long userId,
                                          @Param("recordedAt") LocalDateTime recordedAt);

    /**
     * 查询最新一次测量的心电数据
     */
    List<HealthEcg> selectLatestEcgData(@Param("userId") Long userId, @Param("deviceUuid") String deviceUuid);


    /**
     * 查询心电数据
     * @param userId
     * @param deviceUuid
     * @param start
     * @param end
     * @return
     */
    List<HealthEcg> queryEcgData(@Param("userId") Long userId,
                                 @Param("deviceUuid") String deviceUuid,
                                 @Param("start") LocalDateTime start,
                                 @Param("end") LocalDateTime end);
}
